pos-dashboard/SQL_Server_Sample_Data_Insert.txt

216 lines
9.3 KiB
Plaintext
Raw Normal View History

� Add Complete SQL Server Database Schema & Scripts �️ Database Schema Features: - Complete SQL Server database design for Project Management - 10 tables with proper relationships and constraints - Support for Create Project form requirements - Scalable design with audit trails and time tracking � SQL Scripts Included: - Database creation with proper sizing and configuration - Core tables: Projects, Users, ProjectCategories - Relationship tables: ProjectManagers, ProjectTeamMembers - Additional tables: ProjectTags, ProjectAttachments, Clients - Tracking tables: ProjectActivityLogs, ProjectTimeEntries � Advanced Features: - Computed columns for FullName and Initials - Triggers for automatic UpdatedAt timestamps - Comprehensive indexes for performance - Views for complex queries (ProjectSummary, ProjectTeam) - Stored procedures for API integration � Stored Procedures: - sp_CreateProject: Main procedure for form submission - sp_GetProjectDetails: Complete project information - sp_GetProjectCategories: Categories for dropdown - sp_GetManagers: Managers for multi-select - sp_GetTeamMembers: Team members for assignment - sp_GetProjects: Project listing with pagination � Sample Data: - Project categories (Web Dev, Mobile, Design, etc.) - Sample users with different roles - Sample clients and projects - Complete test data for development � Production Ready: - Error handling and validation - Transaction management - Proper foreign key constraints - Soft delete support - Full audit trail capability
2025-05-29 22:25:15 +07:00
================================================================================
SQL SERVER SAMPLE DATA INSERTION
Project Management System Database
================================================================================
📋 OVERVIEW:
- Insert sample data for testing
- Categories, Users, and initial project data
- Run after all tables are created
================================================================================
🗄️ STEP 8A: INSERT SAMPLE CATEGORIES
================================================================================
-- STEP 8A: Insert sample project categories
USE ProjectManagementDB;
GO
SET IDENTITY_INSERT [dbo].[ProjectCategories] ON;
INSERT INTO [dbo].[ProjectCategories] ([Id], [Name], [Slug], [Color], [Icon], [Description]) VALUES
(1, N'Web Development', N'web-development', N'blue', N'fas fa-code', N'Frontend and backend web applications'),
(2, N'Mobile App', N'mobile-app', N'green', N'fas fa-mobile-alt', N'iOS and Android mobile applications'),
(3, N'Design', N'design', N'purple', N'fas fa-palette', N'UI/UX design and branding projects'),
(4, N'Marketing', N'marketing', N'orange', N'fas fa-bullhorn', N'Digital marketing and campaigns'),
(5, N'DevOps', N'devops', N'cyan', N'fas fa-server', N'Infrastructure and deployment projects'),
(6, N'Data Science', N'data-science', N'red', N'fas fa-chart-line', N'Analytics and machine learning projects');
SET IDENTITY_INSERT [dbo].[ProjectCategories] OFF;
GO
PRINT 'STEP 8A COMPLETED: Sample categories inserted!';
================================================================================
🗄️ STEP 8B: INSERT SAMPLE USERS
================================================================================
-- STEP 8B: Insert sample users
USE ProjectManagementDB;
GO
SET IDENTITY_INSERT [dbo].[Users] ON;
INSERT INTO [dbo].[Users] ([Id], [Username], [Email], [FirstName], [LastName], [Role], [Department], [IsActive], [PasswordHash]) VALUES
(1, N'john.smith', N'john.smith@company.com', N'John', N'Smith', N'manager', N'IT', 1, N'$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi'),
(2, N'sarah.johnson', N'sarah.johnson@company.com', N'Sarah', N'Johnson', N'manager', N'IT', 1, N'$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi'),
(3, N'mike.wilson', N'mike.wilson@company.com', N'Mike', N'Wilson', N'manager', N'IT', 1, N'$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi'),
(4, N'lisa.chen', N'lisa.chen@company.com', N'Lisa', N'Chen', N'manager', N'Design', 1, N'$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi'),
(5, N'alex.rodriguez', N'alex.rodriguez@company.com', N'Alex', N'Rodriguez', N'developer', N'IT', 1, N'$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi'),
(6, N'maria.garcia', N'maria.garcia@company.com', N'Maria', N'Garcia', N'designer', N'Design', 1, N'$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi'),
(7, N'david.brown', N'david.brown@company.com', N'David', N'Brown', N'developer', N'IT', 1, N'$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi'),
(8, N'emma.davis', N'emma.davis@company.com', N'Emma', N'Davis', N'developer', N'IT', 1, N'$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi'),
(9, N'james.miller', N'james.miller@company.com', N'James', N'Miller', N'developer', N'IT', 1, N'$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi'),
(10, N'admin', N'admin@company.com', N'System', N'Administrator', N'admin', N'IT', 1, N'$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi');
SET IDENTITY_INSERT [dbo].[Users] OFF;
GO
PRINT 'STEP 8B COMPLETED: Sample users inserted!';
================================================================================
🗄️ STEP 8C: INSERT SAMPLE CLIENTS
================================================================================
-- STEP 8C: Insert sample clients
USE ProjectManagementDB;
GO
SET IDENTITY_INSERT [dbo].[Clients] ON;
INSERT INTO [dbo].[Clients] ([Id], [Name], [Email], [Phone], [Company], [ContactPerson]) VALUES
(1, N'ABC Corporation', N'contact@abc-corp.com', N'+1-555-0101', N'ABC Corporation', N'Robert Johnson'),
(2, N'XYZ Tech Solutions', N'info@xyz-tech.com', N'+1-555-0102', N'XYZ Tech Solutions', N'Jennifer Smith'),
(3, N'Global Enterprises', N'hello@global-ent.com', N'+1-555-0103', N'Global Enterprises', N'Michael Brown'),
(4, N'StartupCo', N'team@startupco.com', N'+1-555-0104', N'StartupCo', N'Sarah Wilson'),
(5, N'Enterprise Solutions Ltd', N'contact@enterprise-sol.com', N'+1-555-0105', N'Enterprise Solutions Ltd', N'David Lee');
SET IDENTITY_INSERT [dbo].[Clients] OFF;
GO
PRINT 'STEP 8C COMPLETED: Sample clients inserted!';
================================================================================
🗄️ STEP 8D: INSERT SAMPLE PROJECT
================================================================================
-- STEP 8D: Insert a sample project
USE ProjectManagementDB;
GO
SET IDENTITY_INSERT [dbo].[Projects] ON;
INSERT INTO [dbo].[Projects] (
[Id], [ProjectName], [Description], [ClientName], [CategoryId],
[Priority], [Status], [StartDate], [EndDate], [Budget], [CreatedBy]
) VALUES (
1,
N'E-commerce Website Development',
N'Build a modern e-commerce platform with React frontend and .NET Core backend. Features include product catalog, shopping cart, payment integration, and admin dashboard.',
N'ABC Corporation',
1, -- Web Development category
N'high',
N'planning',
'2024-01-15',
'2024-04-15',
50000.00,
1 -- Created by John Smith
);
SET IDENTITY_INSERT [dbo].[Projects] OFF;
GO
-- Insert project managers
INSERT INTO [dbo].[ProjectManagers] ([ProjectId], [UserId], [AssignedBy], [IsPrimary]) VALUES
(1, 1, 10, 1), -- John Smith as primary manager
(1, 2, 10, 0); -- Sarah Johnson as secondary manager
-- Insert team members
INSERT INTO [dbo].[ProjectTeamMembers] ([ProjectId], [UserId], [Role], [HourlyRate], [AssignedBy]) VALUES
(1, 5, N'Frontend Developer', 75.00, 1), -- Alex Rodriguez
(1, 6, N'UI/UX Designer', 65.00, 1), -- Maria Garcia
(1, 7, N'Backend Developer', 80.00, 1); -- David Brown
-- Insert project tags
INSERT INTO [dbo].[ProjectTags] ([ProjectId], [TagName], [Color]) VALUES
(1, N'react', N'blue'),
(1, N'dotnet', N'purple'),
(1, N'ecommerce', N'orange'),
(1, N'responsive', N'green');
-- Insert activity log
INSERT INTO [dbo].[ProjectActivityLogs] ([ProjectId], [UserId], [Action], [Description]) VALUES
(1, 1, N'created', N'Project created with initial team assignment');
PRINT 'STEP 8D COMPLETED: Sample project inserted!';
================================================================================
🗄️ STEP 8E: VERIFICATION QUERIES
================================================================================
-- STEP 8E: Verify data insertion
USE ProjectManagementDB;
GO
-- Check all tables have data
SELECT 'ProjectCategories' as TableName, COUNT(*) as RecordCount FROM [dbo].[ProjectCategories]
UNION ALL
SELECT 'Users', COUNT(*) FROM [dbo].[Users]
UNION ALL
SELECT 'Clients', COUNT(*) FROM [dbo].[Clients]
UNION ALL
SELECT 'Projects', COUNT(*) FROM [dbo].[Projects]
UNION ALL
SELECT 'ProjectManagers', COUNT(*) FROM [dbo].[ProjectManagers]
UNION ALL
SELECT 'ProjectTeamMembers', COUNT(*) FROM [dbo].[ProjectTeamMembers]
UNION ALL
SELECT 'ProjectTags', COUNT(*) FROM [dbo].[ProjectTags]
UNION ALL
SELECT 'ProjectActivityLogs', COUNT(*) FROM [dbo].[ProjectActivityLogs];
-- Test the views
SELECT TOP 5 * FROM [dbo].[vw_ProjectSummary];
SELECT TOP 10 * FROM [dbo].[vw_ProjectTeam];
-- Test API-ready queries
-- Get categories for dropdown
SELECT [Id], [Name], [Slug], [Color] FROM [dbo].[ProjectCategories] WHERE [IsActive] = 1;
-- Get managers for multi-select
SELECT [Id], [Username], [FullName], [Initials] FROM [dbo].[Users] WHERE [Role] = 'manager' AND [IsActive] = 1;
-- Get developers/designers for team selection
SELECT [Id], [Username], [FullName], [Initials], [Role] FROM [dbo].[Users]
WHERE [Role] IN ('developer', 'designer') AND [IsActive] = 1;
PRINT 'STEP 8E COMPLETED: Data verification completed!';
PRINT '================================================================================';
PRINT 'DATABASE SETUP COMPLETED SUCCESSFULLY!';
PRINT 'You can now use the database with your Create Project form.';
PRINT '================================================================================';
================================================================================
🗄️ USEFUL QUERIES FOR TESTING
================================================================================
-- Get project details with team
SELECT
p.ProjectName,
p.ClientName,
pc.Name as Category,
p.Priority,
p.Status,
p.Budget,
STRING_AGG(DISTINCT um.FullName, ', ') as Managers,
STRING_AGG(DISTINCT ut.FullName, ', ') as TeamMembers
FROM Projects p
LEFT JOIN ProjectCategories pc ON p.CategoryId = pc.Id
LEFT JOIN ProjectManagers pm ON p.Id = pm.ProjectId
LEFT JOIN Users um ON pm.UserId = um.Id
LEFT JOIN ProjectTeamMembers ptm ON p.Id = ptm.ProjectId AND ptm.RemovedAt IS NULL
LEFT JOIN Users ut ON ptm.UserId = ut.Id
WHERE p.DeletedAt IS NULL
GROUP BY p.Id, p.ProjectName, p.ClientName, pc.Name, p.Priority, p.Status, p.Budget;
-- Get project activity timeline
SELECT
pal.Action,
pal.Description,
u.FullName as PerformedBy,
pal.CreatedAt
FROM ProjectActivityLogs pal
JOIN Users u ON pal.UserId = u.Id
WHERE pal.ProjectId = 1
ORDER BY pal.CreatedAt DESC;