Skip to content

lucifers-0666/Exploria

Repository files navigation

🌍 Exploria - Tours & Travels Booking System

Your Gateway to Amazing Travel Adventures

A comprehensive travel booking web application built with ASP.NET Web Forms
Explore destinations • Make bookings • Manage trips


ASP.NET C# SQL Server Tailwind CSS JavaScript

Status .NET Framework License

🚀 Quick Start✨ Features🏗️ Architecture📸 Screenshots⚠️ Security


📋 Table of Contents


🎯 Overview

Exploria is a comprehensive, production-ready travel booking system built with ASP.NET Web Forms. This full-featured application includes 38 pages covering every aspect of a modern travel platform.

🔍 Browse amazing destinations with advanced search and filters
📅 Book trips with flexible date selection and secure payment integration
👤 Manage user profiles, wishlists, and complete booking history
🔐 Secure authentication with email verification and password recovery
⚙️ Admin panel for complete content, booking, and user management
📊 Crystal Reports for professional booking and revenue analytics
📝 Blog Platform with full CMS for travel articles and guides
Reviews System with ratings and customer testimonials

🎓 Built For Learning & Production

This project demonstrates:

  • Complete Full-Stack Development with ASP.NET Web Forms
  • Advanced Database Design with 9+ tables and complex relationships
  • Modern Frontend with Tailwind CSS, JavaScript, AOS animations
  • Email Service Integration with SMTP and verification system
  • File Upload Management for images and documents (up to 50MB)
  • Session-Based Authentication with role-based access control
  • 💎 Crystal Reports Integration - Professional business intelligence and reporting system
    • SAP Crystal Reports SDK integrated
    • Custom booking summary reports with filters
    • PDF and Excel export functionality
    • Dynamic report generation with parameters
    • Revenue analytics and trend reports
  • Blog CMS with comments and newsletter subscription
  • Search Engine with multi-filter capabilities
  • Payment Integration ready structure
  • Error Handling with custom 404 page

🏗️ Complete System Architecture

📊 High-Level System Overview

╔═══════════════════════════════════════════════════════════════════════════╗
║                     EXPLORIA TRAVEL BOOKING SYSTEM                        ║
║                          3-Tier Architecture                              ║
╚═══════════════════════════════════════════════════════════════════════════╝

┌───────────────────────────────────────────────────────────────────────────┐
│                          PRESENTATION LAYER                               │
│                         (ASP.NET Web Forms)                               │
├───────────────────────────────────────────────────────────────────────────┤
│                                                                           │
│  ┌─────────────────┐  ┌─────────────────┐  ┌─────────────────┐         │
│  │  PUBLIC PAGES   │  │   USER PAGES    │  │   ADMIN PAGES   │         │
│  ├─────────────────┤  ├─────────────────┤  ├─────────────────┤         │
│  │ • Home.aspx     │  │ • Profile.aspx  │  │ • AddDestination│         │
│  │ • Destination   │  │ • MyBookings    │  │ • AdminDest.    │         │
│  │ • ViewDetails   │  │ • bookingConf   │  │ • AdminUserMgmt │         │
│  │ • About.aspx    │  │                 │  │                 │         │
│  │ • Contact.aspx  │  │                 │  │                 │         │
│  │ • Login/Register│  │                 │  │                 │         │
│  └─────────────────┘  └─────────────────┘  └─────────────────┘         │
│                                                                           │
│  ┌─────────────────────────────────────────────────────────────────┐    │
│  │ MASTER PAGE: Site1.Master (Navbar, Footer, Common Layout)      │    │
│  └─────────────────────────────────────────────────────────────────┘    │
│                                                                           │
│  ┌─────────────────────────────────────────────────────────────────┐    │
│  │ STYLING: Tailwind CSS + Custom CSS (home.css, destinations.css)│    │
│  └─────────────────────────────────────────────────────────────────┘    │
│                                                                           │
│  ┌─────────────────────────────────────────────────────────────────┐    │
│  │ INTERACTIVITY: JavaScript + AOS + Swiper.js                    │    │
│  └─────────────────────────────────────────────────────────────────┘    │
└───────────────────────────────────────────────────────────────────────────┘
                                    ▼
┌───────────────────────────────────────────────────────────────────────────┐
│                         BUSINESS LOGIC LAYER                              │
│                          (C# Code-Behind)                                 │
├───────────────────────────────────────────────────────────────────────────┤
│                                                                           │
│  ┌──────────────────┐  ┌──────────────────┐  ┌──────────────────┐      │
│  │  Authentication  │  │  Booking Logic   │  │  Admin Services  │      │
│  ├──────────────────┤  ├──────────────────┤  ├──────────────────┤      │
│  │ • Login/Logout   │  │ • Price Calc.    │  │ • Dest. CRUD     │      │
│  │ • Registration   │  │ • Date Valid.    │  │ • User Mgmt      │      │
│  │ • Session Mgmt   │  │ • Traveler Info  │  │ • Content Mgmt   │      │
│  │ • Password Reset │  │ • Confirmation   │  │                  │      │
│  └──────────────────┘  └──────────────────┘  └──────────────────┘      │
│                                                                           │
│  ┌─────────────────────────────────────────────────────────────────┐    │
│  │ EMAIL SERVICE: EmailService.cs (SMTP Gmail Integration)        │    │
│  └─────────────────────────────────────────────────────────────────┘    │
│                                                                           │
│  ┌─────────────────────────────────────────────────────────────────┐    │
│  │ FILE HANDLING: Image Upload & Storage (Profile & Destinations) │    │
│  └─────────────────────────────────────────────────────────────────┘    │
└───────────────────────────────────────────────────────────────────────────┘
                                    ▼
┌───────────────────────────────────────────────────────────────────────────┐
│                          DATA ACCESS LAYER                                │
│                            (ADO.NET)                                      │
├───────────────────────────────────────────────────────────────────────────┤
│                                                                           │
│  ┌─────────────────────────────────────────────────────────────────┐    │
│  │ SqlConnection → SqlCommand → SqlDataReader/SqlDataAdapter      │    │
│  └─────────────────────────────────────────────────────────────────┘    │
│                                                                           │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐  ┌──────────┐   │
│  │   CREATE     │  │     READ     │  │    UPDATE    │  │  DELETE  │   │
│  │   (INSERT)   │  │   (SELECT)   │  │   (UPDATE)   │  │ (DELETE) │   │
│  └──────────────┘  └──────────────┘  └──────────────┘  └──────────┘   │
└───────────────────────────────────────────────────────────────────────────┘
                                    ▼
┌───────────────────────────────────────────────────────────────────────────┐
│                           DATABASE LAYER                                  │
│                     SQL Server LocalDB (ToursTravels.mdf)                 │
├───────────────────────────────────────────────────────────────────────────┤
│                                                                           │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐  ┌──────────┐   │
│  │    USERS     │  │ DESTINATIONS │  │   BOOKINGS   │  │ CONTACTS │   │
│  ├──────────────┤  ├──────────────┤  ├──────────────┤  ├──────────┤   │
│  │ • Id (PK)    │  │ • Id (PK)    │  │ • BookingId  │  │ • Id     │   │
│  │ • FirstName  │  │ • Name       │  │ • UserId FK  │  │ • Name   │   │
│  │ • LastName   │  │ • Tagline    │  │ • Dest.Id FK │  │ • Email  │   │
│  │ • Email      │  │ • Duration   │  │ • TravelDate │  │ • Subject│   │
│  │ • Password   │  │ • Price      │  │ • Travelers  │  │ • Message│   │
│  │ • Phone      │  │ • Category   │  │ • TotalAmt   │  │          │   │
│  │ • Role       │  │ • Images     │  │ • Status     │  │          │   │
│  │ • Image      │  │ • Region     │  │ • BookingDt  │  │          │   │
│  └──────────────┘  └──────────────┘  └──────────────┘  └──────────┘   │
│                                                                           │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐  ┌──────────┐   │
│  │  BLOGPOSTS   │  │ BLOG COMMENTS│  │  REVIEWS     │  │ WISHLIST │   │
│  ├──────────────┤  ├──────────────┤  ├──────────────┤  ├──────────┤   │
│  │ • Id (PK)    │  │ • Id (PK)    │  │ • Id (PK)    │  │ • Id     │   │
│  │ • Title      │  │ • BlogId FK  │  │ • DestId FK  │  │ • UserId │   │
│  │ • Content    │  │ • Name       │  │ • UserId FK  │  │ • DestId │   │
│  │ • Category   │  │ • Email      │  │ • Rating     │  │ • Added  │   │
│  │ • Author     │  │ • Comment    │  │ • Review     │  │          │   │
│  │ • ImageUrl   │  │ • Date       │  │ • Date       │  │          │   │
│  │ • Published  │  │ • Approved   │  │ • Verified   │  │          │   │
│  └──────────────┘  └──────────────┘  └──────────────┘  └──────────┘   │
│                                                                           │
│  ┌──────────────┐  ┌──────────────┐                                     │
│  │ NEWSLETTER   │  │ EMAIL TOKENS │                                     │
│  ├──────────────┤  ├──────────────┤                                     │
│  │ • Id (PK)    │  │ • Id (PK)    │                                     │
│  │ • Email      │  │ • UserId FK  │                                     │
│  │ • Subscribed │  │ • Token      │                                     │
│  │ • IsActive   │  │ • Expiry     │                                     │
│  └──────────────┘  └──────────────┘                                     │
│                                                                           │
│                  Foreign Key Relationships & Complex Joins                │
└───────────────────────────────────────────────────────────────────────────┘

🔄 Enhanced User Journey Flow

graph TD
    A[👤 Visitor Arrives] --> B{Logged In?}
    B -->|No| C[🏠 Browse Home Page]
    B -->|Yes| D[🎯 User Dashboard]
    
    C --> E[🔍 Search/Browse Destinations]
    E --> F[📋 View Details & Reviews]
    F --> G{Want to Book?}
    
    G -->|No| H[💾 Add to Wishlist]
    G -->|Yes| I[🔐 Must Login/Register]
    
    I --> J[📝 Register New Account]
    I --> K[🔑 Login Existing]
    
    J --> L[📧 Email Verification]
    L --> M[✅ Account Verified]
    K --> M
    
    M --> D
    D --> N[📅 Make Booking]
    D --> O[👤 View Profile]
    D --> P[📊 My Bookings]
    D --> Q[💾 My Wishlist]
    
    N --> R[💳 Payment]
    R --> S[✅ Booking Confirmed]
    S --> T[📧 Confirmation Email]
    T --> U[🎉 Thank You Page]
    
    U --> V[⭐ Leave Review]
    V --> W[📝 Read Travel Blog]
    
    O --> X[✏️ Edit Profile]
    P --> Y[📜 View Booking History]
    Q --> Z[🗺️ Manage Saved Destinations]
    
    style A fill:#e1f5ff
    style D fill:#d4edda
    style S fill:#d1ecf1
    style U fill:#fff3cd
    style V fill:#ffe4e1
Loading

🔐 Authentication & Authorization Flow

┌─────────────────────────────────────────────────────────────────────┐
│                    AUTHENTICATION WORKFLOW                          │
└─────────────────────────────────────────────────────────────────────┘

  REGISTRATION                LOGIN               SESSION CHECK
       │                        │                        │
       ▼                        ▼                        ▼
┌─────────────┐         ┌─────────────┐         ┌─────────────┐
│ Register    │         │ Login.aspx  │         │ Page_Load   │
│ Form Submit │         │ Credentials │         │ Event       │
└──────┬──────┘         └──────┬──────┘         └──────┬──────┘
       │                       │                        │
       ▼                       ▼                        ▼
┌─────────────┐         ┌─────────────┐         ┌─────────────┐
│ Validate    │         │ Verify User │         │ Check       │
│ Input       │         │ in Database │         │ Session     │
└──────┬──────┘         └──────┬──────┘         └──────┬──────┘
       │                       │                        │
       ▼                       ▼                        ▼
┌─────────────┐         ┌─────────────┐         ┌─────────────┐
│ Insert User │         │ Create      │         │ Redirect    │
│ to Database │         │ Session:    │         │ if Invalid  │
└──────┬──────┘         │ - UserID    │         └─────────────┘
       │                │ - FullName  │
       │                │ - Email     │
       │                │ - Role      │
       ▼                │ - isLogin   │
┌─────────────┐         └──────┬──────┘
│ Upload      │                │
│ Profile Pic │                ▼
└──────┬──────┘         ┌─────────────┐
       │                │ Redirect to │
       │                │ Home Page   │
       │                └─────────────┘
       ▼
┌─────────────┐
│ Auto Login  │
│ New User    │
└─────────────┘


  AUTHORIZATION CHECK (Role-Based Access Control)
  ───────────────────────────────────────────────

    Page Request → Check Session["isLogin"]
           │
           ├─→ [NULL] → Redirect to Login.aspx
           │
           └─→ [TRUE] → Check Session["Role"]
                    │
                    ├─→ [users] → Access User Pages
                    │              - Profile.aspx
                    │              - MyBookings.aspx
                    │              - bookingConfirmation.aspx
                    │
                    └─→ [admin] → Access Admin Pages
                                   - AddDestinations.aspx
                                   - AdminDestinations.aspx
                                   - AdminUserManagement.aspx

📦 Component Architecture

┌─────────────────────────────────────────────────────────────────┐
│                      FRONTEND COMPONENTS                        │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐        │
│  │   NAVBAR     │  │    HERO      │  │   FOOTER     │        │
│  │ (Master Page)│  │   SECTION    │  │ (Master Page)│        │
│  └──────────────┘  └──────────────┘  └──────────────┘        │
│                                                                 │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐        │
│  │ DESTINATION  │  │   BOOKING    │  │    PROFILE   │        │
│  │    CARDS     │  │     FORM     │  │     CARD     │        │
│  └──────────────┘  └──────────────┘  └──────────────┘        │
│                                                                 │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐        │
│  │   IMAGE      │  │    PRICE     │  │    STATUS    │        │
│  │   GALLERY    │  │  CALCULATOR  │  │    BADGES    │        │
│  └──────────────┘  └──────────────┘  └──────────────┘        │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────┐
│                      BACKEND SERVICES                           │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  ┌──────────────────────────────────────────────────┐          │
│  │           EmailService.cs                        │          │
│  ├──────────────────────────────────────────────────┤          │
│  │ • SendBookingConfirmation()                      │          │
│  │ • SendPasswordResetLink()                        │          │
│  │ • SendContactNotification()                      │          │
│  └──────────────────────────────────────────────────┘          │
│                                                                 │
│  ┌──────────────────────────────────────────────────┐          │
│  │           FileUploadHandler                      │          │
│  ├──────────────────────────────────────────────────┤          │
│  │ • SaveProfileImage()                             │          │
│  │ • SaveDestinationImages()                        │          │
│  │ • ValidateImageFormat()                          │          │
│  └──────────────────────────────────────────────────┘          │
│                                                                 │
│  ┌──────────────────────────────────────────────────┐          │
│  │           SessionManager                         │          │
│  ├──────────────────────────────────────────────────┤          │
│  │ • CreateUserSession()                            │          │
│  │ • ValidateSession()                              │          │
│  │ • ClearSession()                                 │          │
│  └──────────────────────────────────────────────────┘          │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

✨ Key Features

👥 User Features

🔐 Authentication & Security

  • ✅ User registration with profile photo upload
  • Email verification system with secure tokens
  • ✅ Secure login/logout functionality
  • ✅ Password recovery via email with reset links
  • ✅ Session-based access control with timeout
  • ✅ Role-based authorization (User/Admin)

🔍 Advanced Search & Discovery

  • Global search with keyword matching
  • Advanced filters (price, category, duration, rating)
  • ✅ Sort by relevance, price, rating, popularity
  • ✅ Browse destinations with category filters
  • Wishlist system to save favorite destinations
  • ✅ Beautiful card-based grid layout
  • ✅ Detailed destination pages with image galleries
  • ✅ View pricing, duration, and included amenities

📅 Complete Booking System

  • ✅ Interactive booking form with date picker
  • ✅ Select number of adults and children
  • ✅ Real-time price calculation
  • Payment gateway integration ready
  • ✅ Booking confirmation with unique ID
  • ✅ Email confirmation sent automatically
  • My Bookings - Complete booking history
  • ✅ Track status (Pending, Confirmed, Cancelled, Completed)
  • ✅ Thank you page with booking summary

👤 User Dashboard & Profile

  • ✅ View and edit personal profile
  • ✅ Upload/change profile picture
  • ✅ Manage wishlist items
  • ✅ View complete booking history
  • ✅ Update personal information
  • ✅ Manage newsletter subscriptions

⭐ Reviews & Social

  • Submit destination reviews with ratings
  • ✅ View customer testimonials
  • ✅ Read travel blogs and guides
  • ✅ Comment on blog posts
  • ✅ Share content on social media

⚙️ Admin Features

📊 Comprehensive Admin Dashboard

  • Statistics overview (bookings, revenue, users)
  • ✅ Real-time data visualization
  • ✅ Quick access to all admin functions

🗺️ Destination Management

  • Add/Edit/Delete destinations
  • ✅ Upload multiple destination images (up to 50MB)
  • ✅ Set pricing and destination details
  • ✅ Categorize destinations (Beach, Mountain, City, Adventure, Cultural, Nature, City Tours)
  • ✅ Manage destination descriptions and inclusions
  • ✅ Set group sizes and durations

📅 Booking Management & Crystal Reports

  • View all bookings with filtering
  • ✅ Update booking status
  • 💎 SAP Crystal Reports Integration for professional analytics:
    • AdminBookingReports.aspx - Full-featured reporting dashboard
    • BookingSummaryReport.rpt - Custom Crystal Reports template
    • Dynamic Parameters: Filter by date range and booking status
    • Data Visualization: Professional report layouts with grouping
    • Export Options:
      • 📄 Export to PDF (print-ready format)
      • 📊 Export to Excel (data analysis ready)
    • Report Features:
      • Total revenue calculations
      • Booking count statistics
      • Customer information display
      • Destination details
      • Status-based filtering
      • Date range selection
    • Business Intelligence: Revenue tracking, trend analysis, performance metrics
  • ✅ Real-time report generation
  • ✅ Professional report formatting

👥 User Management

  • ✅ View all registered users
  • Detailed user profiles with booking history
  • ✅ Monitor user activity
  • ✅ Manage user roles
  • Bulk email sender for marketing

📝 Content Management

  • Blog CMS - Create, edit, delete articles
  • ✅ Manage blog categories and tags
  • ✅ View and moderate comments
  • Review moderation system
  • ✅ Manage testimonials
  • ✅ Update deals and offers
  • ✅ Gallery management

📧 Communication

  • ✅ View contact form submissions
  • ✅ Automated email notifications
  • ✅ Booking confirmations
  • ✅ Password reset emails
  • ✅ Email verification system
  • ✅ Newsletter management

🎨 UI/UX Features

  • Ultra-modern design with Tailwind CSS
  • Smooth animations with AOS library
  • Image carousels with Swiper.js
  • Responsive design for all devices
  • ✅ Interactive forms with validation
  • ✅ Loading states and error handling
  • Custom 404 error page
  • ✅ Mobile-first approach
  • ✅ Dark mode compatible styles
  • ✅ Accessibility features

🛠 Technology Stack

Backend Technologies

Technology Purpose Version
ASP.NET ASP.NET Web Forms Web Framework .NET 4.7.2
C# C# Programming Language 7.3
ADO.NET ADO.NET Data Access Built-in
SQL Server SQL Server LocalDB Database 2019
IIS IIS Express Web Server 10.0

Frontend Technologies

Technology Purpose Version
HTML5 HTML5 Markup Latest
CSS3 CSS3 Styling Latest
Tailwind Tailwind CSS CSS Framework 3.x
JavaScript JavaScript Interactivity ES6+
jQuery jQuery DOM Manipulation 3.x

JavaScript Libraries

  • AOS (Animate On Scroll) - Scroll animations
  • Swiper.js - Touch-enabled image carousels
  • Font Awesome - Icon library
  • Google Fonts - Typography

Reporting & Analytics (Added Feature ⭐)

Technology Purpose Version Status
Crystal Reports SAP Crystal Reports for Visual Studio Business Intelligence & Reporting 13.0.33 ✅ Integrated

Crystal Reports Implementation Details:

  • Report File: Reports/BookingSummaryReport.rpt (Professional template)
  • Admin Interface: AdminBookingReports.aspx (Web-based dashboard)
  • Code-Behind: AdminBookingReports.aspx.cs (Report generation logic)
  • Data Model: BookingSummaryReport.cs, ReportsDataSet.cs
  • Features:
    • Dynamic report generation with real-time data
    • Parameter-based filtering (Date Range, Status)
    • Professional formatting and layout
    • Multiple export formats (PDF, Excel)
    • Summary calculations (Revenue, Count, Average)
    • Grouping and sorting capabilities
    • Crystal Report Viewer integration

Additional Services

  • Gmail SMTP - Email service integration
  • LocalDB - Development database
  • Crystal Reports SDK - Report generation and export
  • Web.config Handlers - Crystal Reports image handler configured

🗄️ Database Design

Complete Database Schema (9 Tables)

┌─────────────────────────────────────────────────────────────────────┐
│                         DATABASE SCHEMA                             │
│                   ToursTravels.mdf (SQL Server LocalDB)             │
│                        9 Tables • Complex Relationships             │
└─────────────────────────────────────────────────────────────────────┘

┌─────────────────────┐              ┌──────────────────────┐
│      USERS          │              │    DESTINATIONS      │
├─────────────────────┤              ├──────────────────────┤
│ 🔑 Id (INT, PK)     │              │ 🔑 Id (INT, PK)      │
│ FirstName           │              │ Name                 │
│ LastName            │              │ Tagline              │
│ Email (UNIQUE)      │              │ Duration             │
│ Password            │              │ GroupSize            │
│ Phone               │              │ Region               │
│ Country             │              │ Description          │
│ State               │              │ Included             │
│ City                │              │ Price (DECIMAL)      │
│ Image               │              │ Category             │
│ Role (DEFAULT)      │              │ MainImage            │
│ EmailVerified (BIT) │              │ Image                │
└──────────┬──────────┘              │ DateAdded (DATETIME) │
           │                         └──────────┬───────────┘
           │                                    │
           │         ┌──────────────────────────┼────────────────┐
           │         │                          │                │
           │         │                          │                │
           └─────────┼──────────────┐           │                │
                     │              │           │                │
                     ▼              ▼           ▼                ▼
              ┌──────────────┐  ┌──────────────┐  ┌──────────────┐
              │   BOOKINGS   │  │   REVIEWS    │  │   WISHLIST   │
              ├──────────────┤  ├──────────────┤  ├──────────────┤
              │ 🔑 BookingId │  │ 🔑 Id (PK)   │  │ 🔑 Id (PK)   │
              │ 🔗 UserId    │  │ 🔗 UserId    │  │ 🔗 UserId    │
              │ 🔗 DestId    │  │ 🔗 DestId    │  │ 🔗 DestId    │
              │ TravelDate   │  │ Rating (1-5) │  │ DateAdded    │
              │ Adults       │  │ ReviewText   │  └──────────────┘
              │ Children     │  │ IsVerified   │
              │ TotalAmount  │  │ ReviewDate   │
              │ Status       │  └──────────────┘
              │ DateOfBook   │
              └──────────────┘

     ┌──────────────────┐         ┌──────────────────┐
     │    BLOGPOSTS     │         │  BLOGCOMMENTS    │
     ├──────────────────┤         ├──────────────────┤
     │ 🔑 Id (INT, PK)  │◄────────┤ 🔑 Id (INT, PK)  │
     │ Title            │    1:N  │ 🔗 BlogId (FK)   │
     │ Content          │         │ CommenterName    │
     │ Excerpt          │         │ CommenterEmail   │
     │ Category         │         │ CommentText      │
     │ Author           │         │ CommentDate      │
     │ ImageUrl         │         │ IsApproved       │
     │ PublishedDate    │         └──────────────────┘
     │ ViewCount        │
     │ IsFeatured       │
     │ IsPublished      │
     │ Tags             │
     └──────────────────┘

     ┌─────────────────────────┐      ┌───────────────────┐
     │  EMAILVERIFICATIONTOKEN │      │  CONTACTS         │
     ├─────────────────────────┤      ├───────────────────┤
     │ 🔑 Id (INT, PK)         │      │ 🔑 Id (INT, PK)   │
     │ 🔗 UserId (FK)          │      │ Name              │
     │ Email                   │      │ Email             │
     │ Token (UNIQUE)          │      │ Subject           │
     │ CreatedDate             │      │ Message           │
     │ ExpiryDate              │      │ DateSubmitted     │
     │ IsUsed                  │      └───────────────────┘
     └─────────────────────────┘

     ┌───────────────────────────┐
     │  NEWSLETTERSUBSCRIPTIONS  │
     ├───────────────────────────┤
     │ 🔑 Id (INT, PK)           │
     │ Email (UNIQUE)            │
     │ SubscribedDate            │
     │ IsActive                  │
     └───────────────────────────┘

  KEY RELATIONSHIPS:
  • Users 1 ──── N Bookings
  • Users 1 ──── N Reviews
  • Users 1 ──── N Wishlist
  • Users 1 ──── N EmailVerificationTokens
  • Destinations 1 ──── N Bookings
  • Destinations 1 ──── N Reviews
  • Destinations 1 ──── N Wishlist
  • BlogPosts 1 ──── N BlogComments
📋 Click to view detailed table schemas (All 9 Tables)

1. Users Table

CREATE TABLE Users (
    Id INT PRIMARY KEY IDENTITY(1,1),
    FirstName NVARCHAR(MAX) NOT NULL,
    LastName NVARCHAR(MAX) NOT NULL,
    Email NVARCHAR(MAX) NOT NULL UNIQUE,
    Password NVARCHAR(MAX) NOT NULL,
    Phone NVARCHAR(MAX) NOT NULL,
    Country NVARCHAR(MAX) NOT NULL,
    State NVARCHAR(MAX) NOT NULL,
    City NVARCHAR(MAX) NOT NULL,
    Image NVARCHAR(MAX) NULL,
    Role NVARCHAR(MAX) DEFAULT 'users',
    EmailVerified BIT DEFAULT 0
);

2. Destinations Table

CREATE TABLE Destinations (
    Id INT PRIMARY KEY IDENTITY(1,1),
    Name NVARCHAR(MAX) NOT NULL,
    Tagline NVARCHAR(MAX) NULL,
    Duration NVARCHAR(MAX) NULL,
    GroupSize NVARCHAR(MAX) NULL,
    Region NVARCHAR(MAX) NULL,
    Description NVARCHAR(MAX) NOT NULL,
    Included NVARCHAR(MAX) NULL,
    Price DECIMAL(10,2) NOT NULL,
    Category NVARCHAR(MAX) NOT NULL,
    MainImage NVARCHAR(MAX) NOT NULL,
    Image NVARCHAR(MAX) NULL,
    DateAdded DATETIME DEFAULT GETDATE()
);

3. Bookings Table

CREATE TABLE Bookings (
    BookingId INT PRIMARY KEY IDENTITY(1,1),
    UserId INT FOREIGN KEY REFERENCES Users(Id),
    DestinationId INT FOREIGN KEY REFERENCES Destinations(Id),
    TravelerFirstName NVARCHAR(MAX) NOT NULL,
    TravelerLastName NVARCHAR(MAX) NOT NULL,
    TravelerEmail NVARCHAR(MAX) NOT NULL,
    TravelerPhone NVARCHAR(MAX) NULL,
    TravelDate DATE NOT NULL,
    NumberOfAdults INT NOT NULL,
    NumberOfChildren INT DEFAULT 0,
    TotalAmount DECIMAL(10,2) NOT NULL,
    BookingStatus NVARCHAR(50) DEFAULT 'Pending'
        CHECK (BookingStatus IN ('Pending', 'Confirmed', 'Cancelled', 'Completed')),
    DateOfBooking DATETIME DEFAULT GETDATE()
);

4. DestinationReviews Table

CREATE TABLE DestinationReviews (
    Id INT PRIMARY KEY IDENTITY(1,1),
    DestinationId INT NOT NULL,
    DestinationName NVARCHAR(255),
    UserId INT,
    CustomerName NVARCHAR(255) NOT NULL,
    CustomerEmail NVARCHAR(255),
    Rating INT NOT NULL CHECK (Rating >= 1 AND Rating <= 5),
    ReviewText NVARCHAR(MAX) NOT NULL,
    ReviewDate DATETIME NOT NULL DEFAULT GETDATE(),
    IsVerified BIT NOT NULL DEFAULT 0,
    HelpfulCount INT NOT NULL DEFAULT 0,
    IsApproved BIT NOT NULL DEFAULT 1
);

5. BlogPosts Table

CREATE TABLE BlogPosts (
    Id INT PRIMARY KEY IDENTITY(1,1),
    Title NVARCHAR(MAX) NOT NULL,
    Excerpt NVARCHAR(MAX) NULL,
    Content NVARCHAR(MAX) NOT NULL,
    Category NVARCHAR(100) NULL,
    Author NVARCHAR(255) NULL,
    ImageUrl NVARCHAR(MAX) NULL,
    PublishedDate DATETIME DEFAULT GETDATE(),
    ViewCount INT DEFAULT 0,
    IsFeatured BIT DEFAULT 0,
    IsPublished BIT DEFAULT 1,
    Tags NVARCHAR(MAX) NULL
);

6. BlogComments Table

CREATE TABLE BlogComments (
    Id INT PRIMARY KEY IDENTITY(1,1),
    BlogId INT NOT NULL,
    CommenterName NVARCHAR(255),
    CommenterEmail NVARCHAR(255),
    CommentText NVARCHAR(MAX),
    CommentDate DATETIME DEFAULT GETDATE(),
    IsApproved BIT DEFAULT 1
);

7. NewsletterSubscriptions Table

CREATE TABLE NewsletterSubscriptions (
    Id INT PRIMARY KEY IDENTITY(1,1),
    Email NVARCHAR(255) UNIQUE,
    SubscribedDate DATETIME DEFAULT GETDATE(),
    IsActive BIT DEFAULT 1
);

8. EmailVerificationTokens Table

CREATE TABLE EmailVerificationTokens (
    Id INT PRIMARY KEY IDENTITY(1,1),
    UserId INT NOT NULL,
    Email NVARCHAR(255) NOT NULL,
    Token NVARCHAR(255) NOT NULL,
    CreatedDate DATETIME DEFAULT GETDATE(),
    ExpiryDate DATETIME NOT NULL,
    IsUsed BIT DEFAULT 0
);

9. Contacts Table

CREATE TABLE Contacts (
    Id INT PRIMARY KEY IDENTITY(1,1),
    Name NVARCHAR(MAX) NOT NULL,
    Email NVARCHAR(MAX) NOT NULL,
    Subject NVARCHAR(MAX) NOT NULL,
    Message NVARCHAR(MAX) NOT NULL,
    DateSubmitted DATETIME DEFAULT GETDATE()
);

Chen Notation ER Diagram (Conceptual)

The diagram below models the core business entities and relationships in Chen notation. Relationship diamonds (BOOKS, REVIEWS, HAS, HAS_TOKEN, SUBSCRIBES) represent associations; associative relationships like Bookings and Reviews are drawn as diamonds.

graph TD
  %% GitHub-safe, Chen-style conceptual view
  %% Entities
  USERS[Users]
  DEST[Destinations]
  BLOGPOSTS[BlogPosts]
  BLOGCOMMENTS[BlogComments]
  NEWSLETTER[NewsletterSubscriptions]
  TOKENS[EmailVerificationTokens]
  CONTACTS[Contacts]

  %% Relationship diamonds
  BOOKINGS{BOOKS}
  REVIEWS{REVIEWS}
  HAS_COMMENT{HAS}
  HAS_TOKEN{HAS_TOKEN}
  SUBSCRIBES{SUBSCRIBES}

  %% Core associations
  USERS --- BOOKINGS
  DEST --- BOOKINGS

  USERS --- REVIEWS
  DEST --- REVIEWS

  BLOGPOSTS --- HAS_COMMENT
  HAS_COMMENT --- BLOGCOMMENTS

  USERS --- HAS_TOKEN
  HAS_TOKEN --- TOKENS

  USERS --- SUBSCRIBES
  SUBSCRIBES --- NEWSLETTER

  %% Standalone conceptual entity
  CONTACTS
Loading

Notes:

  • Bookings and Reviews are modeled as associative relationships (diamonds) connecting Users and Destinations.
  • BlogComments relates to BlogPosts via HAS.
  • Users SUBSCRIBE to NewsletterSubscriptions via SUBSCRIBES.
  • EmailVerificationTokens are linked to Users via HAS_TOKEN.
  • Contacts remain standalone in the conceptual model.

Logical ER (Crow’s Foot) – Detailed

For a compact, attribute-rich view, here is the logical ER (crow’s-foot) diagram that aligns with the 9-table schema described above.

erDiagram
  USERS {
    INT Id PK
    NVARCHAR FirstName
    NVARCHAR LastName
    NVARCHAR Email UNIQUE
    NVARCHAR Password
    NVARCHAR Phone
    NVARCHAR Country
    NVARCHAR State
    NVARCHAR City
    NVARCHAR Image
    NVARCHAR Role
    BIT EmailVerified
  }

  DESTINATIONS {
    INT Id PK
    NVARCHAR Name
    NVARCHAR Tagline
    NVARCHAR Duration
    NVARCHAR GroupSize
    NVARCHAR Region
    NVARCHAR Description
    NVARCHAR Included
    DECIMAL Price
    NVARCHAR Category
    NVARCHAR MainImage
    NVARCHAR Image
    DATETIME DateAdded
  }

  BOOKINGS {
    INT BookingId PK
    INT UserId FK
    INT DestinationId FK
    DATETIME TravelDate
    INT Adults
    INT Children
    DECIMAL TotalAmount
    NVARCHAR Status
    DATETIME DateOfBooking
  }

  DESTINATIONREVIEWS {
    INT Id PK
    INT DestinationId FK
    INT UserId FK
    INT Rating
    NVARCHAR Review
    DATETIME Date
    BIT IsApproved
  }

  BLOGPOSTS {
    INT Id PK
    NVARCHAR Title
    NVARCHAR Content
    NVARCHAR Excerpt
    NVARCHAR Category
    NVARCHAR Author
    NVARCHAR ImageUrl
    DATETIME PublishedDate
    INT ViewCount
    BIT IsFeatured
    BIT IsPublished
    NVARCHAR Tags
  }

  BLOGCOMMENTS {
    INT Id PK
    INT BlogId FK
    NVARCHAR CommenterName
    NVARCHAR CommenterEmail
    NVARCHAR CommentText
    DATETIME CommentDate
    BIT IsApproved
  }

  NEWSLETTERSUBSCRIPTIONS {
    INT Id PK
    NVARCHAR Email UNIQUE
    DATETIME SubscribedDate
    BIT IsActive
  }

  EMAILVERIFICATIONTOKENS {
    INT Id PK
    INT UserId FK
    NVARCHAR Email
    NVARCHAR Token UNIQUE
    DATETIME CreatedDate
    DATETIME ExpiryDate
    BIT IsUsed
  }

  CONTACTS {
    INT Id PK
    NVARCHAR Name
    NVARCHAR Email
    NVARCHAR Subject
    NVARCHAR Message
    DATETIME DateSubmitted
  }

  USERS ||--o{ BOOKINGS : makes
  DESTINATIONS ||--o{ BOOKINGS : for
  USERS ||--o{ DESTINATIONREVIEWS : writes
  DESTINATIONS ||--o{ DESTINATIONREVIEWS : receives
  BLOGPOSTS ||--o{ BLOGCOMMENTS : has
  USERS ||--o{ EMAILVERIFICATIONTOKENS : has
Loading

📁 Project Structure

Tours&Travels/                             🎯 38 TOTAL PAGES
│
├── 📄 Web.config                          # Application configuration
├── 📄 Site1.Master                        # Master page (layout template)
├── 📄 Site1.Master.cs                     # Master page code-behind
│
├── 🏠 PUBLIC PAGES (12 Pages)
│   ├── Home.aspx                          # Landing page with hero section
│   ├── Destination.aspx                   # Browse all destinations
│   ├── ViewDetails.aspx                   # Single destination details
│   ├── About.aspx                         # About us page
│   ├── Contact.aspx                       # Contact form
│   ├── SearchResults.aspx                 # Advanced search with filters
│   ├── Blog.aspx                          # Travel blog listing
│   ├── BlogDetails.aspx                   # Full blog article view
│   ├── Reviews.aspx                       # Customer reviews & ratings
│   ├── Gallery.aspx                       # Photo gallery
│   ├── Deals.aspx                         # Special offers & deals
│   ├── FAQ.aspx                           # Frequently asked questions
│   ├── Testimonials.aspx                  # Customer testimonials
│   ├── Terms.aspx                         # Terms & conditions
│   ├── Privacy.aspx                       # Privacy policy
│   ├── Sitemap.aspx                       # Site map
│   └── Error404.aspx                      # Custom 404 error page
│
├── 🔐 AUTHENTICATION PAGES (5 Pages)
│   ├── Login.aspx                         # User login
│   ├── Register.aspx                      # New user registration
│   ├── ForgetPassword.aspx                # Password recovery
│   ├── ResetPassword.aspx                 # Reset password form
│   └── EmailVerification.aspx             # Email verification system
│
├── 👤 USER PAGES (7 Pages - Require Login)
│   ├── Dashboard.aspx                     # User dashboard overview
│   ├── Profile.aspx                       # User profile management
│   ├── MyBookings.aspx                    # Complete booking history
│   ├── bookingConfirmation.aspx           # Booking form & confirmation
│   ├── ThankYou.aspx                      # Booking success page
│   ├── Payment.aspx                       # Payment gateway integration
│   ├── Wishlist.aspx                      # Saved destinations
│   └── Newsletter.aspx                    # Newsletter preferences
│
├── ⚙️ ADMIN PAGES (9 Pages - Require Admin Role)
│   ├── AddDestinations.aspx               # Add new destinations
│   ├── AdminDestinations.aspx             # Manage destinations
│   ├── AdminUserManagement.aspx           # Manage users
│   ├── AdminUserView.aspx                 # Detailed user view
│   ├── AdminBookings.aspx                 # View & manage bookings
│   ├── AdminBookingReports.aspx           # Crystal Reports analytics
│   ├── AdminBlog.aspx                     # Blog CMS management
│   ├── AdminReviews.aspx                  # Review moderation
│   ├── BulkEmailSender.aspx               # Mass email marketing
│   └── InsertTestData.aspx                # Database testing utility
│
├── 📧 SERVICES & UTILITIES
│   ├── EmailService.cs                    # Email notification service
│   ├── ModelDest.cs                       # Destination model
│   ├── BookingSummaryReport.cs            # Report data model
│   ├── ReportsDataSet.cs                  # Crystal Reports dataset
│   └── Controllers/                       # Business logic controllers
│
├── 🎨 ASSETS
│   ├── css/                               # 27 CSS files
│   │   ├── site.css                       # Global styles
│   │   ├── Home.css                       # Home page styles
│   │   ├── Destination.css                # Destinations styles
│   │   ├── UltraModernHero.css            # Hero section styles
│   │   ├── Auth.css                       # Authentication styles
│   │   ├── Admin.css                      # Admin panel styles
│   │   ├── blog.css                       # Blog styles
│   │   ├── Booking.css                    # Booking form styles
│   │   └── [20+ more specialized CSS files]
│   │
│   ├── js/                                # JavaScript files
│   │   └── custom scripts for interactivity
│   │
│   └── Images/                            # Image assets
│       ├── destination-images/            # Destination photos
│       ├── ProfileImages/                 # User profile pictures
│       └── static-assets/                 # Icons, logos, etc.
│
├── 📊 REPORTS
│   └── Reports/
│       ├── BookingSummaryReport.rpt       # Crystal Reports template
│       ├── BookingSummaryReport.cs        # Report code-behind
│       └── README_CREATE_REPORT.md        # Report setup guide
│
├── 🗄️ DATABASE
│   └── App_Data/
│       ├── ToursTravels.mdf               # SQL Server database file
│       └── ToursTravels_log.ldf           # Database transaction log
│
├── 📦 PACKAGES
│   └── packages/                          # NuGet packages
│
└── 📚 DOCUMENTATION
    ├── CRYSTAL_REPORTS_GUIDE.md           # Crystal Reports setup
    ├── PHASE_2_COMPLETE.md                # Phase 2 features log
    ├── PHASE_3_COMPLETE.md                # Phase 3 features log
    ├── CSS_ARCHITECTURE.md                # CSS system docs
    ├── FOOTER_ENHANCEMENTS_COMPLETE.md    # Footer features
    └── [Additional technical documentation]

📊 Page Count Summary

  • Public Pages: 17 pages
  • Authentication: 5 pages
  • User Pages: 7 pages
  • Admin Pages: 9 pages
  • Total: 38 fully functional pages

🚀 Quick Start

Prerequisites

Before you begin, ensure you have the following installed:

  • Visual Studio 2019 or later (Community/Professional/Enterprise)
  • .NET Framework 4.7.2 or higher
  • SQL Server LocalDB (comes with Visual Studio)
  • IIS Express (comes with Visual Studio)
  • ✅ Web browser (Chrome, Firefox, Edge recommended)

Installation Steps

1️⃣ Clone the Repository

git clone https://github.com/Sah-Ashok/Web_Project_Tours.git
cd Web_Project_Tours

2️⃣ Open in Visual Studio

  • Open Tours&Travels.sln in Visual Studio
  • Wait for NuGet packages to restore automatically

3️⃣ Configure Database

The database is already configured with LocalDB. The connection string in Web.config:

<connectionStrings>
  <add name="constr" 
       connectionString="Data Source=(LocalDB)\MSSQLLocalDB;
                        AttachDbFilename=D:\Exploria\Tours&Travels\App_Data\ToursTravels.mdf;
                        Initial Catalog=ToursTravels;
                        Integrated Security=True" 
       providerName="System.Data.SqlClient"/>
</connectionStrings>

Note: Update the path if your project is in a different location.

4️⃣ Initialize Database

Option A: Automatic (Recommended)

  • Database ToursTravels.mdf is included in App_Data/ folder
  • Tables will auto-create when you first run the application
  • Sample data can be inserted via InsertTestData.aspx (admin page)

Option B: Manual Setup (If needed)

  • Open Server Explorer in Visual Studio
  • Connect to (LocalDB)\MSSQLLocalDB
  • Attach ToursTravels.mdf from App_Data folder
  • All 9 tables should be visible

Database Size Limits:

  • Max file upload: 50 MB (configured in Web.config)
  • LocalDB size: Up to 10 GB per database file

5️⃣ Configure Email Service (Optional)

Update EmailService.cs with your Gmail credentials:

NetworkCredential loginInfo = new NetworkCredential(
    "your-email@gmail.com",    // Your Gmail
    "your-app-password"         // Gmail App Password
);

Note: Use Gmail App Password, not your regular password. Generate App Password

6️⃣ Run the Application

  • Press F5 or click Run in Visual Studio
  • Application will open in your default browser
  • Default URL: http://localhost:XXXX/Home.aspx

🎉 First Time Setup

Create Admin Account

  1. Register a new user via Register.aspx
  2. Verify email (check console or email inbox)
  3. Open database in Visual Studio (Server Explorer)
  4. Find your user in Users table
  5. Change Role from 'users' to 'admin'
  6. Set EmailVerified to 1 (True)
  7. Re-login to access admin panel

Add Sample Data

Option 1: Use Test Data Generator (Recommended)

  1. Login as admin
  2. Navigate to /InsertTestData.aspx
  3. Click "Generate Sample Data"
  4. Database will be populated with:
    • 10+ sample destinations
    • Multiple bookings
    • Customer reviews
    • Blog posts

Option 2: Manual Entry

  1. Login with admin account
  2. Navigate to "Add Destination" in admin panel
  3. Fill in destination details:
    • Name, tagline, description
    • Price, duration, group size
    • Category selection
    • Upload main image (up to 50MB)
  4. Save and view on destinations page

Setup Crystal Reports ⭐ (Recommended for Full Experience)

Crystal Reports has been integrated into this project for professional business intelligence and reporting capabilities.

What's Already Done:

  • ✅ Report template created: Reports/BookingSummaryReport.rpt
  • ✅ Admin report page: AdminBookingReports.aspx
  • ✅ All code implementation completed
  • ✅ Web.config handlers configured
  • ✅ DataSet schemas defined
  • ✅ Export functionality (PDF/Excel) implemented

What You Need to Do (One-Time Setup):

  1. Install SAP Crystal Reports for Visual Studio

    • Download: Free from SAP website (for developers)
    • Version: 13.0.33 or later recommended
    • File: CRforVS_13_0_33.exe (~500MB)
    • Installation Time: 10-15 minutes
    • Restart Required: Yes (after installation)
  2. Open Project in Visual Studio

    • Crystal Reports requires Visual Studio (not VS Code)
    • Open Tours&Travels.sln
    • Wait for packages to restore
  3. Verify References (Should auto-load)

    • CrystalDecisions.CrystalReports.Engine
    • CrystalDecisions.ReportSource
    • CrystalDecisions.Shared
    • CrystalDecisions.Web
  4. Build and Run

    • Press Ctrl+Shift+B to build
    • Press F5 to run
    • Login as admin
    • Navigate to /AdminBookingReports.aspx
  5. Test Reports

    • Select date range
    • Choose booking status filter
    • Click "Generate Report"
    • Try "Export to PDF" and "Export to Excel"

Expected Results:

  • ✅ Professional booking report displays in viewer
  • ✅ All booking data visible with formatting
  • ✅ PDF export downloads successfully
  • ✅ Excel export opens in spreadsheet application
  • ✅ Summary totals calculate correctly

Why Crystal Reports?

  • 🎯 Professional Reporting: Enterprise-level report quality
  • 📊 Business Intelligence: Revenue tracking and analytics
  • 📄 Multiple Formats: PDF for sharing, Excel for analysis
  • 🔧 Customizable: Easily create new report types
  • 💼 Industry Standard: Used by Fortune 500 companies
  • 📈 Scalable: Handles large datasets efficiently

If You Skip Crystal Reports Setup:

  • Project will run without Crystal Reports installed
  • All other 37 pages work perfectly
  • Only /AdminBookingReports.aspx page will show error
  • You can still view bookings in AdminBookings.aspx (GridView)
  • No impact on core booking functionality

Full Setup Guide: See CRYSTAL_REPORTS_GUIDE.md in project root for:

  • Detailed installation steps with screenshots
  • Troubleshooting common issues
  • Alternative setup methods
  • Report customization guide
  • Creating additional report types

📸 Project Showcase

🏠 Home Page - Ultra Modern Design

  • Hero Section with smooth Ken Burns effect on background images
  • Animated call-to-action buttons with hover effects
  • Featured Destinations carousel with Swiper.js
  • Category-based filtering (7 categories)
  • Customer Testimonials with star ratings
  • Newsletter Subscription in footer
  • Scroll animations with AOS library
  • Fully responsive for all devices

🔍 Search & Discovery

  • Global Search Bar in header (always accessible)
  • Advanced Search Page with multiple filters:
    • Price range slider
    • Category selection
    • Duration filter
    • Rating filter
    • Sort by: Relevance, Price (Low/High), Rating, Popularity
  • Real-time results update
  • "No results" state with helpful suggestions

🗺️ Destinations Page - Enhanced

  • Responsive grid layout (1-3 columns based on screen size)
  • Beautiful destination cards with:
    • High-quality images with hover zoom effect
    • Name, tagline, and region
    • Category badge with icon
    • Price per person
    • Duration and group size
    • Average rating with stars
    • "View Details" and "Add to Wishlist" buttons
  • Category filtering with animated transitions
  • Pagination for large result sets

📋 Destination Details - Complete View

  • Image Gallery with Swiper carousel (multiple photos)
  • Breadcrumb navigation
  • Comprehensive destination information:
    • Full description with HTML formatting
    • Pricing breakdown (adults, children, discounts)
    • Duration and group size limits
    • Region and category
    • What's included in the package
  • Customer Reviews Section with ratings
  • "Book Now" button (redirects to login if not authenticated)
  • "Add to Wishlist" functionality
  • Social sharing buttons

📅 Complete Booking System

  • Step 1: Destination Selection (from details page)
  • Step 2: Booking Form with validation:
    • Travel date picker (future dates only)
    • Number of adults and children
    • Traveler information (name, email, phone)
    • Special requests field
    • Real-time price calculation display
    • Terms & conditions checkbox
  • Step 3: Payment Integration (structure ready)
  • Step 4: Confirmation Page with:
    • Unique booking ID
    • Complete booking summary
    • Payment status
    • Instructions for next steps
  • Step 5: Thank You Page with email confirmation
  • Automatic email with booking details sent to user

👤 User Dashboard - Comprehensive

  • Dashboard Overview:
    • Quick statistics (total bookings, total spent, wishlist items)
    • Recent bookings preview
    • Quick action buttons
  • My Profile:
    • View and edit personal information
    • Upload/change profile picture (with image preview)
    • Update contact details
    • Change password option
  • My Bookings:
    • Complete booking history with filters
    • Status indicators with color coding:
      • 🟡 Pending - Awaiting confirmation
      • 🟢 Confirmed - Booking confirmed
      • 🔴 Cancelled - Booking cancelled
      • 🔵 Completed - Trip completed
    • View detailed booking information
    • Download booking confirmation
    • Leave review after trip completion
  • My Wishlist:
    • Saved destinations
    • Remove items functionality
    • Quick book from wishlist

⚙️ Admin Panel - Full Control

  • Admin Dashboard:

    • Real-time statistics cards
    • Total bookings, revenue, users, destinations
    • Recent bookings overview
    • Quick action buttons
    • Charts and graphs (ready for integration)
  • Destination Management:

    • Add new destinations with full form
    • Edit existing destinations
    • Delete with confirmation
    • Upload up to 50MB images
    • Manage multiple images per destination
    • Set categories, prices, durations
    • Featured destination toggle
  • Booking Management:

    • View all bookings in GridView
    • Filter by status, date range, user
    • Update booking status
    • View complete booking details
    • Crystal Reports for analytics:
      • Generate booking summary reports
      • Filter by date range and status
      • Export to PDF and Excel
      • Revenue reports by destination
      • Monthly trend analysis
  • User Management:

    • View all registered users
    • Detailed user view with booking history
    • Manage user roles (user/admin)
    • Search and filter users
    • Bulk Email Sender for marketing campaigns
  • Content Management:

    • Blog CMS: Create, edit, delete articles
      • Rich text editor for content
      • Category management (7 categories)
      • Tag system for SEO
      • Featured post toggle
      • Publish/unpublish control
      • View count tracking
    • Review Moderation:
      • Approve/reject customer reviews
      • Mark reviews as verified
      • Delete inappropriate content
    • Manage testimonials
    • Update deals and offers
    • FAQ management

📝 Blog Platform - Complete CMS

  • Blog Listing Page:
    • Grid layout of blog posts
    • Featured posts highlighted
    • Category badges with icons
    • Read time estimation
    • View count display
    • Tags for each post
    • Pagination
  • Blog Details Page:
    • Full article view with rich content
    • Author information with bio
    • Related articles sidebar
    • Social sharing (Facebook, Twitter, LinkedIn, WhatsApp)
    • Comments section
    • Newsletter signup widget
    • Tag cloud
  • Comment System:
    • Submit comments with name and email
    • Approval system for moderation
    • Nested comment display

⭐ Reviews & Testimonials

  • Destination Reviews:
    • Star rating system (1-5 stars)
    • Detailed review text
    • Verified traveler badge
    • Review date
    • Helpful votes counter
  • Testimonials Page:
    • Customer success stories
    • Photo testimonials
    • Video testimonials (structure ready)
    • Filter by destination or category

📊 Crystal Reports Integration - Professional Business Intelligence ⭐

Major Feature Addition: Full SAP Crystal Reports integration for enterprise-level reporting

Booking Summary Report Dashboard

  • Access: /AdminBookingReports.aspx (Admin only)
  • Report Template: Reports/BookingSummaryReport.rpt

Report Features:

  1. Dynamic Filters:

    • Date Range Selector: From Date and To Date pickers
    • Status Filter: All, Pending, Confirmed, Cancelled, Completed
    • Real-time filter application
  2. Report Data Display:

    • Customer Information: Name, email, phone
    • Destination Details: Name, category, region
    • Booking Information:
      • Unique Booking ID
      • Travel date
      • Number of adults and children
      • Total amount charged
      • Booking status with color coding
      • Date of booking
    • Summary Calculations:
      • Total Revenue (SUM of all bookings)
      • Total Bookings Count
      • Average Booking Value
      • Total Travelers (Adults + Children)
  3. Export Capabilities:

    • 📄 PDF Export:
      • High-quality print-ready format
      • Automatic filename with timestamp
      • Professional layout preservation
      • Downloads as: BookingReport_YYYYMMDDHHMMSS.pdf
    • 📊 Excel Export:
      • Spreadsheet format for data analysis
      • All data fields included
      • Ready for pivot tables and charts
      • Downloads as: BookingReport_YYYYMMDDHHMMSS.xlsx
  4. Report Viewer Integration:

    • Embedded Crystal Report Viewer control
    • Zoom and pan capabilities
    • Page navigation
    • Print directly from browser
    • Full-screen mode support

Technical Implementation:

Files Created for Crystal Reports:

Reports/
├── BookingSummaryReport.rpt          # Crystal Reports template file
├── BookingSummaryReport.cs           # Report code-behind
├── ReportsDataSet.cs                 # Typed dataset for report
├── ReportsDataSet.xsd                # Dataset schema
└── README_CREATE_REPORT.md           # Report creation guide

AdminBookingReports.aspx              # Report viewer page
AdminBookingReports.aspx.cs           # Report generation logic
AdminBookingReports.aspx.designer.cs  # Designer file

Code Implementation:

// Dynamic Data Loading
private DataTable GetBookingsData()
{
    // Complex SQL JOIN query across 3 tables
    // - Bookings
    // - Destinations  
    // - Users
    // Filters applied: DateRange, Status
    // Returns formatted DataTable
}

// Report Generation
protected void btnGenerateReport_Click(object sender, EventArgs e)
{
    // 1. Load report template
    // 2. Set parameters (FromDate, ToDate, Status)
    // 3. Bind data dynamically
    // 4. Display in CrystalReportViewer
}

// PDF Export
protected void btnExportPDF_Click(object sender, EventArgs e)
{
    // Generate PDF with timestamp
    // Force download
    // Preserve formatting
}

// Excel Export  
protected void btnExportExcel_Click(object sender, EventArgs e)
{
    // Export to XLSX format
    // All data included
    // Ready for analysis
}

Web.config Configuration:

<!-- Crystal Reports HTTP Handlers -->
<system.web>
  <httpHandlers>
    <add verb="GET" path="CrystalImageHandler.aspx" 
         type="CrystalDecisions.Web.CrystalImageHandler, 
               CrystalDecisions.Web, Version=13.0.4000.0" />
  </httpHandlers>
</system.web>

<system.webServer>
  <handlers>
    <add name="CrystalImageHandler.aspx_GET" verb="GET" 
         path="CrystalImageHandler.aspx" 
         type="CrystalDecisions.Web.CrystalImageHandler" />
  </handlers>
</system.webServer>

Setup Requirements:

  1. SAP Crystal Reports for Visual Studio:

    • Version: 13.0.33 or later
    • Free download from SAP website
    • Visual Studio extension required
  2. Project References Added:

    • CrystalDecisions.CrystalReports.Engine
    • CrystalDecisions.ReportSource
    • CrystalDecisions.Shared
    • CrystalDecisions.Web
  3. Configuration:

    • HTTP handlers configured in Web.config
    • Report file marked as "Content" with "Copy if newer"
    • Build action properly set

Business Value:

  • Revenue Tracking: Monitor total income from bookings
  • Trend Analysis: Identify booking patterns by date
  • Status Monitoring: Track pending vs confirmed bookings
  • Customer Insights: Analyze booking behavior
  • Performance Metrics: Measure destination popularity
  • Financial Reports: Export for accounting and auditing
  • Data-Driven Decisions: Make informed business choices

Additional Report Types (Structure Ready):

Crystal Reports infrastructure supports creating:

  • Revenue by Destination Report: Which destinations generate most revenue
  • Monthly Trend Report: Booking and revenue trends over time
  • Customer Booking History: Individual customer activity reports
  • Popular Destinations Analysis: Most booked destinations
  • Seasonal Analysis: Peak booking periods
  • Cancellation Reports: Track and analyze cancellations

Complete Setup Guide: See CRYSTAL_REPORTS_GUIDE.md in project root for detailed installation and configuration instructions.

🎨 Additional Features

  • Custom 404 Error Page with search and quick links
  • Email Verification System with secure tokens
  • Newsletter Management with subscription tracking
  • Gallery Page for showcasing travel photos
  • FAQ Page with collapsible sections
  • Deals Page for special offers
  • Terms & Privacy Pages for legal compliance
  • Sitemap for SEO optimization
  • Payment Gateway structure (ready for integration)

⚠️ Security Notice

🎓 Educational Purpose Disclaimer

This project is built for educational purposes and demonstrates web development concepts. It contains intentional security simplifications that should NOT be used in production environments.

⚠️ Known Security Issues

Issue Current Implementation Production Recommendation
🔴 Password Storage Plain text in database Use BCrypt, Argon2, or PBKDF2 hashing
🔴 SQL Injection String concatenation in queries Use parameterized queries exclusively
🟡 Input Validation Basic client-side only Implement server-side validation & sanitization
🟡 Session Management Basic ASP.NET sessions Add session timeout, secure cookies, HTTPS
🟡 CSRF Protection Not implemented Add anti-forgery tokens to all forms
🟡 XSS Prevention Limited encoding Use HTML encoding, Content Security Policy

🔒 Security Best Practices for Production

If you plan to deploy this application in a production environment, implement these critical security measures:

1. Password Security

// DON'T (Current - Educational)
string password = txtPassword.Text;
cmd.CommandText = "INSERT INTO Users (Password) VALUES ('" + password + "')";

// DO (Production)
using BCrypt.Net;
string hashedPassword = BCrypt.HashPassword(password);
cmd.CommandText = "INSERT INTO Users (Password) VALUES (@Password)";
cmd.Parameters.AddWithValue("@Password", hashedPassword);

2. SQL Injection Prevention

// DON'T (Current - Educational)
string query = "SELECT * FROM Users WHERE Email = '" + email + "'";

// DO (Production)
string query = "SELECT * FROM Users WHERE Email = @Email";
cmd.Parameters.AddWithValue("@Email", email);

3. Additional Security Measures

  • ✅ Enable HTTPS/SSL for all pages
  • ✅ Implement rate limiting on login attempts
  • ✅ Add CAPTCHA to prevent bots
  • ✅ Use Content Security Policy (CSP) headers
  • ✅ Implement proper error handling (don't expose stack traces)
  • ✅ Add logging and monitoring
  • ✅ Regular security audits and dependency updates
  • ✅ Implement two-factor authentication (2FA)

📚 Security Learning Resources


🎓 Learning Outcomes

By studying and working with this project, you'll learn:

Backend Development (ASP.NET Web Forms)

  • Complete ASP.NET Web Forms architecture and page lifecycle
  • Master pages and nested content pages
  • Session state management with authentication
  • ADO.NET for database operations (SqlConnection, SqlCommand, SqlDataReader, SqlDataAdapter)
  • File upload and management (images up to 50MB)
  • Email integration with SMTP (Gmail)
  • Role-based access control (admin/user authorization)
  • ViewState and PostBack handling
  • Custom error pages and exception handling
  • Server-side validation and data sanitization
  • Crystal Reports integration for business intelligence
  • Token-based email verification system

Frontend Development & UI/UX

  • Responsive web design with Tailwind CSS
  • Modern CSS techniques (Grid, Flexbox, animations)
  • JavaScript DOM manipulation and event handling
  • Third-party libraries integration:
    • AOS (Animate On Scroll)
    • Swiper.js (carousels)
    • Font Awesome (icons)
  • Form validation (client-side and server-side)
  • AJAX for dynamic content loading
  • User feedback mechanisms (loading states, success messages)
  • Accessibility considerations (ARIA labels, semantic HTML)
  • Cross-browser compatibility
  • Mobile-first approach

Database Design & Management

  • Relational database design with 9+ tables
  • Primary and foreign keys with referential integrity
  • Data normalization (3NF)
  • Complex JOIN operations across multiple tables
  • SQL Server LocalDB usage and configuration
  • CRUD operations with parametrized queries
  • Database indexing for performance
  • Transaction management for data integrity
  • Stored procedures concepts (ready for implementation)
  • Data seeding and test data generation

Software Architecture & Design Patterns

  • 3-Tier architecture (Presentation, Business, Data layers)
  • Separation of concerns principle
  • Code-behind pattern in ASP.NET Web Forms
  • Repository pattern concepts
  • MVC-like structure within Web Forms
  • Singleton pattern for database connections
  • Factory pattern for object creation
  • Code organization and modular structure

Security Best Practices

  • Authentication systems (login, registration, logout)
  • Authorization with role-based access
  • Password recovery with secure tokens
  • Email verification system
  • Session management and timeout handling
  • Input validation and sanitization
  • SQL injection prevention techniques
  • Cross-Site Scripting (XSS) prevention
  • File upload security (type and size validation)
  • Error handling without exposing sensitive data

Business Intelligence & Reporting

  • Crystal Reports design and implementation
  • Report parameters and filtering
  • Data grouping and summarization
  • Export functionality (PDF, Excel)
  • Chart creation for data visualization
  • Report performance optimization

Project Management & DevOps

  • Version control with Git
  • Documentation best practices (README, inline comments)
  • Code commenting and XML documentation
  • Project structure organization
  • Deployment considerations (IIS, Web.config)
  • Testing strategies (manual and automated)
  • Bug tracking and issue resolution
  • Feature development workflow

Real-World Skills

  • E-commerce/Booking system patterns
  • Content Management System (CMS) development
  • Search engine implementation with filters
  • Payment gateway integration structure
  • Email notification systems
  • User review and rating systems
  • Wishlist functionality
  • Newsletter subscription management
  • Blog platform with comments
  • Admin dashboard with analytics
  • File management systems
  • Image optimization techniques

Soft Skills & Professional Development

  • Problem-solving complex business requirements
  • Code refactoring and optimization
  • Performance tuning for web applications
  • User experience considerations
  • Responsive design thinking
  • Clean code principles
  • Technical documentation writing
  • System design and architecture planning

🤝 Contributing

Contributions are welcome! If you'd like to improve this project:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Contribution Ideas

  • 🔒 Implement security improvements (hashing, parameterized queries)
  • 🎨 Enhance UI/UX design
  • 📱 Improve mobile responsiveness
  • ✨ Add new features (reviews, ratings, wishlists)
  • 🐛 Fix bugs and issues
  • 📝 Improve documentation
  • 🧪 Add unit tests

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.


👨‍💻 Author

Ashok Kumar Sah


🙏 Acknowledgments

  • ASP.NET Web Forms documentation
  • Tailwind CSS team
  • AOS (Animate On Scroll) library
  • Swiper.js for amazing carousels
  • Font Awesome for icons
  • Stack Overflow community
  • All contributors and supporters

📚 Additional Documentation

This project includes comprehensive documentation files:

Main Documentation

  • README.md - This file (complete project overview)
  • CRYSTAL_REPORTS_GUIDE.md - 📊 Complete Crystal Reports setup guide
    • Installation instructions
    • Step-by-step configuration
    • Troubleshooting guide
    • Creating custom reports
    • Export functionality details

Technical Documentation (in Tours&Travels folder)

  • PHASE_2_COMPLETE.md - Features added in Phase 2 (5 pages)
  • PHASE_3_COMPLETE.md - Features added in Phase 3 (5 pages)
  • EXPLORIA_COMPLETE_SUMMARY.md - Complete feature summary
  • CSS_ARCHITECTURE.md - CSS system organization
  • CSS_FILE_MAPPING.md - CSS file structure guide
  • FOOTER_ENHANCEMENTS_COMPLETE.md - Footer features
  • NAVIGATION_INTEGRATION_COMPLETE.md - Navigation system

Report Documentation

  • Reports/README_CREATE_REPORT.md - Report creation guide

📊 Project Statistics

  • Total Pages: 38 fully functional pages
  • Database Tables: 9 tables with relationships
  • CSS Files: 27 specialized stylesheets
  • Total Lines of Code: 15,000+ lines (approx.)
  • Development Time: 3 phases of development
  • Features: 50+ distinct features
  • Admin Functions: 20+ administrative tools
  • Reporting System: ⭐ SAP Crystal Reports integrated
    • 1 professional report template (.rpt)
    • 2 export formats (PDF, Excel)
    • 3 dynamic parameters (Date Range, Status)
    • Multiple summary calculations

🚀 Deployment Ready

This project is structured for production deployment:

IIS Compatible - Ready for Windows Server deployment
Configuration Management - Separate Debug and Release configs
Error Handling - Custom error pages implemented
Security Headers - Basic security configurations in place
File Size Management - 50MB upload limit configured
Database Migration - LocalDB can be migrated to SQL Server
Session Management - Production-ready session configuration
Email System - SMTP configured and tested

Deployment Checklist

  • Update connection string for production database
  • Configure production SMTP settings
  • Enable HTTPS/SSL certificates
  • Set custom error pages in Web.config
  • Implement password hashing (BCrypt recommended)
  • Add SQL injection protection (parameterized queries)
  • Configure IIS application pool
  • Set up backup strategy for database
  • Enable logging and monitoring
  • Configure CDN for static assets (optional)

📞 Support

If you have any questions or need help with the project:

  1. 📖 Check the documentation
  2. 📄 Review additional documentation files in project
  3. 🐛 Open an issue
  4. 💬 Start a discussion
  5. 📧 Contact the author

🎯 Project Roadmap

✅ Completed Features

  • Core booking system (38 pages)
  • User authentication & authorization
  • Admin dashboard with full CRUD
  • Blog platform with CMS
  • Review and rating system
  • Wishlist functionality
  • Advanced search with filters
  • Email verification system
  • 💎 Crystal Reports IntegrationMAJOR FEATURE
    • SAP Crystal Reports SDK installed and configured
    • Custom booking summary report template created
    • Dynamic report generation with parameters
    • PDF export functionality
    • Excel export functionality
    • Admin reporting dashboard
    • Revenue and analytics calculations
    • Professional report formatting
  • Newsletter management
  • Responsive design (mobile-first)

🔄 Potential Enhancements

  • Payment gateway integration (Stripe/PayPal)
  • Real-time chat support (SignalR)
  • Social media authentication (Google, Facebook)
  • Multi-language support (i18n)
  • Advanced analytics dashboard
  • Mobile app (Xamarin/MAUI)
  • API development (RESTful)
  • Push notifications
  • Live booking calendar
  • Interactive maps integration

⭐ If you find this project helpful, please give it a star! ⭐

A comprehensive, production-ready travel booking system
Built with ASP.NET Web Forms • 38 Pages • 9 Database Tables • Crystal Reports

Made with ❤️ by Ashok Kumar Sah
For learning, education, and professional development


📈 Project Metrics

Total Pages Database Tables CSS Files Features


🔝 Back to Top

Last Updated: November 13, 2025 • Version: 3.0 (Phase 3 Complete)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors